/**
 * 作文相关API
 * 处理作文的CRUD操作
 */

import { post, get, put, del } from './api.js';

/**
 * 创建新作文
 * @param {Object} essayData - 作文数据
 * @param {string} essayData.title - 标题
 * @param {string} essayData.content - 内容（50-5000字符）
 * @param {string} essayData.gradeLevel - 学段（primary/middle/high）
 * @param {Array<string>} [essayData.imageUrls] - 图片URL数组（可选）
 * @returns {Promise<Object>} 创建的作文 { success, data: { essay }, message }
 */
export const create = async (essayData) => {
  try {
    const response = await post('/essays', essayData);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '创建作文失败',
      type: error.type || 'CREATE_ESSAY_ERROR',
    };
  }
};

/**
 * 获取作文列表
 * @param {Object} filters - 过滤条件
 * @param {number} [filters.limit=10] - 每页数量（1-100）
 * @param {number} [filters.offset=0] - 偏移量（>=0）
 * @param {string} [filters.gradeLevel] - 学段过滤（primary/middle/high）
 * @param {string} [filters.status] - 状态过滤（pending/processing/completed/failed）
 * @returns {Promise<Object>} 作文列表 { success, data: { essays, pagination }, message }
 */
export const list = async (filters = {}) => {
  try {
    const response = await get('/essays', filters);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '获取作文列表失败',
      type: error.type || 'LIST_ESSAYS_ERROR',
    };
  }
};

/**
 * 根据ID获取作文详情
 * @param {string} essayId - 作文ID
 * @returns {Promise<Object>} 作文详情 { success, data: { essay }, message }
 */
export const getById = async (essayId) => {
  try {
    const response = await get(`/essays/${essayId}`);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '获取作文详情失败',
      type: error.type || 'GET_ESSAY_ERROR',
    };
  }
};

/**
 * 更新作文
 * @param {string} essayId - 作文ID
 * @param {Object} updates - 要更新的字段
 * @param {string} [updates.title] - 标题
 * @param {string} [updates.content] - 内容
 * @param {string} [updates.gradeLevel] - 学段
 * @returns {Promise<Object>} 更新后的作文 { success, data: { essay }, message }
 */
export const update = async (essayId, updates) => {
  try {
    const response = await put(`/essays/${essayId}`, updates);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '更新作文失败',
      type: error.type || 'UPDATE_ESSAY_ERROR',
    };
  }
};

/**
 * 删除作文
 * @param {string} essayId - 作文ID
 * @returns {Promise<Object>} 删除结果 { success, message }
 */
export const deleteEssay = async (essayId) => {
  try {
    const response = await del(`/essays/${essayId}`);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '删除作文失败',
      type: error.type || 'DELETE_ESSAY_ERROR',
    };
  }
};

// 导出所有API方法
export default {
  create,
  list,
  getById,
  update,
  delete: deleteEssay, // 'delete'是保留字，使用别名
};

